package com.muyu.controller;

import com.muyu.entity.UserEntity;
import com.muyu.group.AddGroup;
import com.muyu.group.UpdateGroup;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 * @ClassName: UserController
 * @Author: Zirun.Xin
 * @Date: 2025/4/7 下午3:28
 * @Version: 1.0
 * @Description: 用户控制层
 */
@RestController
@RequestMapping(value = "/api/v1/user")
public class UserController {

    /**
     * 用户添加
     * @param userEntity 用户实体
     * @param bindingResult 绑定结果集
     * @return 响应结果集
     */
    @PostMapping(value = "/save")
    public Map<String, String> saveUser(@Validated(value = AddGroup.class) @RequestBody UserEntity userEntity,
                                            BindingResult bindingResult) {
        /* result.hasErrors()如果前端传来的值和在实体类标注的注解不对应就返回false。
        比如在实体在name字段标注了@NotBlank(message = "用户名称不能为空")而前端没传name就返回了false; */
        if(bindingResult.hasErrors()) {
            Map<String, String> map = new HashMap<>();
            // result.getFieldErrors()获取校验的错误结果对象然后遍历
            for (FieldError fieldError : bindingResult.getFieldErrors()) {
                // FieldError 获取到错误提示
                String message = fieldError.getDefaultMessage();
                // 获取错误的属性的名字
                String field = fieldError.getField();
                map.put(field, message);
            }
            return map;
        }
        return null;
    }
}
